package com.cman777.springc.common.bean.entity;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.cman777.springc.common.bean.Iface.EntityIFace;
import com.cman777.springc.common.bean.enums.StateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;



/**
 * @author chenzhicong
 * @time 2019/11/8 16:11
 * @description 提供实体类的抽象
 */
@Getter
@Setter
public abstract class BaseEntity implements Serializable, EntityIFace {
    /**
     * 创建时间
     */
    @NotNull
    @ApiModelProperty("创建日期")
    @TableField(value = "created_date",fill = FieldFill.INSERT)
    private LocalDateTime createdDate;

    /**
     * 逻辑删除必要字段
     */
    @NotNull
    @ApiModelProperty("10X:已删除,10A:未删除")
    @TableField(value = "state",fill = FieldFill.INSERT)
    private StateEnum state;
    /**
     * 最后一次更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "state_date",fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime stateDate;

    /**
     * 最后一次操作人id
     *
     * 新增，更新（包括逻辑删除） 等操作，都要更新这个字段
     */
    @NotBlank
    @TableField(value = "operator_id",fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty("操作人Id")
    private String operatorId;


}
